@RestController
@RequestMapping("/demo")
public class DemoController {
    @Autowired
    private GeoUtils geoUtils;

    //不同业务的key
    private static final String GEO_KEY = "user_key";


    /**
     * 保存经纬度到redis里
     * id为数据id也可是其他，一版为数据id
     * x为经度,一般为double
     * y为维度,一般为double
     *
     * @return
     */
    @GetMapping("/save")
    public Long save(String id, String x, String y) {
        Point point = new Point(Double.valueOf(x), Double.valueOf(y));
        Long save = geoUtils.save(GEO_KEY, point, id);
        System.out.println(save);
        return save;
    }

     /**
     *   没分页
     * 传入经纬度
     * 传入定位，获取周边的数据，GeoDTO是自定义封装好的数据信息，如果不需要可以调用geoUtils.near方法，返回的是没有封装好的数据
     *
     * @return
     */
    @GetMapping("/near")
    public List<GeoVO> nearByGeoDto(double x, double y) {
        Point point = new Point(x, y);
        //查找1000米范围内所有的数据
        List<GeoVO> geoDTOS = geoUtils.nearByGeoDto(point, GEO_KEY, 1000);
        return geoDTOS;
    }

    /**
    *   分页查找
    */
    @GetMapping("/list")
    public GeoPage<GeoVO> nearByGeoList(double x, double y, Integer pagNum, String userId) {
        Point point = new Point(x, y);
        //查找1000米范围内所有的数据
        //        List<GeoDTO> geoDTOS = geoUtils.nearByGeoDto(point, GEO_KEY, 1000);
        //        List<GeoDTO> page = geoUtils.getPage(1, 2, GEO_KEY, "3", "8000", "km", "asc", "lllll");
        if (pagNum == null) {
            pagNum = 1;
        }
        GeoPage<GeoVO> objectRedisPageHelp = new GeoPage<>();
        objectRedisPageHelp.setPageIndex(pagNum);
        objectRedisPageHelp.setPageSize(2);
        //        objectRedisPageHelp.setPageIndex(pagNum);

        GeoPage<GeoVO> page = geoUtils.nearByPage(point, GEO_KEY, 1000.0, userId, objectRedisPageHelp);
        return page;

    }

}